#include <stdio.h>
#define FALSE 0
#define TRUE 1

int main(void)
{
    // digito = caracter lido
    char digito;
    //numero = conversao para int
    int numero, somatorioDez = 0,somatorioOnze = 0, contador = 0, decimo, ultimo, valido;

    while ((digito=getchar()) != '\n') //enquanto o usuario não terminar de digitar
    {
        if (contador <=10)
        {
            contador++;                                     //incrementa contador
            numero = (int)digito - (int)'0';                //conversao de char apra int
        }

        if (contador == 10)                                 //se ja leu os 10 primeiros digitos
        {
            decimo = (somatorioDez%11)%10;                  //calcula o decimo numero valido
            if (decimo != numero)                           //compara o numero valido com o numero digitado pelo usuario
                valido = FALSE;                             //se nao for igual, CPF é inválido
            else                                            //se o décimo número do CPF for válido
            {
                somatorioOnze += (contador-1)*numero;       //acrescenta o decimo digito ao somatorio
                ultimo = (somatorioOnze%11)%10;             //calcula o ultimo numero valido
                digito = getchar();                         //le o ultimo numero da tela
                numero = digito - '0';                      //converte o ultimo digito lido para int
                if ( ultimo == numero)                      //compara o ultimo numero valido com o digitado
                    valido = TRUE;
                else
                    valido = FALSE;
            }
        }
        else                                                //se ainda nao leu os 10 primeiros digitos
            if (contador < 10)
            {
                somatorioDez += contador*numero;            //somatorio para o decimo numero
                if (contador >= 2)
                {
                    somatorioOnze += (contador -1)*numero;  //somatorio para o ultimo numero
                }
            }
    }

    if (valido)
        printf("O CPF digitado e valido !");
    else
        printf("Desculpe, o CPF digitado e invalido");

    return 0;
}

